迅雷下载服务加速节点的来源分析
迅雷前端逻辑:electron + nodejs
迅雷后端逻辑:lua5.3
随便对一个种子进行加速,种子内有5个文件。
看到后端下载服务访问了以下网址:
内容都经过加密,先附加到下载服务上。
发现其使用AES-ECB加密,解密后,可以发现:hub5btmain.v6.shub.sandai.net 接口返回种子内每个文件的GUID和CID。
拿到gcid后,作为参数传递给lua脚本LuaServiceSHubQueryBTFileIndexCallBack::LuaCallBack 进行处理。
想办法把其lua脚本都提取出来,其脚本都打包为xar文件中,我们找到loadbuf函数。
直接做HOOK注入到下载进程中,DUMP出来。
这样我们就全部解析出来了。
有了种子里面的每个文件的信息后,就可以去请求加速节点了。迅雷用的是流协议,看下它是怎么请求的:
可以看到,迅雷请求的时候,把要查询的种子内的文件的guid和一个jwt的token还有种子信息都发给了dcdnhub.xfs.xcloud.sandai.net:80进行查询。
看下token内容:
接着解密下节点服务器返回的信息:
逆向其反序列的函数:
已经很明显了,我们写个反序列化的代码:
拿到这些peer_server后就可以加速了。这样的话,我们就可以拿一个会员账号给一千个人进行加速拉。
奇怪的是为什么peer会有个人ip。
难道是~开会员用其他没开会员的人加速?。嘿嘿。
看雪ID:xiaofu
bbs.pediy.com/user-99882
本文由看雪论坛 xiaofu 原创
转载请注明来自看雪社区
2019 看雪安全开发者峰会门票正在热售中!
长按识别下方二维码,即可享受 2.5折 优惠!
热门文章阅读
公众号ID:ikanxue
官方微博:看雪安全
商务合作:wsc@kanxue.com